home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TPUG - Toronto PET Users Group
/
TPUG Users Group CD
/
TPUG Users Group CD.iso
/
AMIGA
/
AMICUS
/
AMICUS14.ADF
/
Tool
/
file
< prev
next >
Wrap
Text File
|
1989-01-28
|
82KB
|
2,348 lines
!DateStamp
/include/libraries/dos.h
struct DateStamp {
LONG ds_Days; /* Number of days since Jan. 1, 1978 */
LONG ds_Minute; /* Number of minutes past midnight */
LONG ds_Tick; /* Number of ticks past minute */
}; /* DateStamp */
!FileInfoBlock
/include/libraries/dos.h
struct FileInfoBlock {
LONG fib_DiskKey;
LONG fib_DirEntryType; /* Type of Directory. If < 0, then a plain file.
* If > 0 a directory */
char fib_FileName[108]; /* Null terminated. Max 30 chars used for now */
LONG fib_Protection; /* bit mask of protection, rwxd are 3-0. */
LONG fib_EntryType;
LONG fib_Size; /* Number of bytes in file */
LONG fib_NumBlocks; /* Number of blocks in file */
struct DateStamp fib_Date;/* Date file last changed */
char fib_Comment[116]; /* Null terminated.
* Comment associated with file */
}; /* FileInfoBlock */
!InfoData
/include/libraries/dos.h
struct InfoData {
LONG id_NumSoftErrors; /* number of soft errors on disk */
LONG id_UnitNumber; /* Which unit disk is (was) mounted on */
LONG id_DiskState; /* See defines below */
LONG id_NumBlocks; /* Number of blocks on disk */
LONG id_NumBlocksUsed; /* Number of block in use */
LONG id_BytesPerBlock;
LONG id_DiskType; /* Disk Type code */
BSTR id_VolumeNode; /* BCPL pointer to volume name (BCPL string) */
LONG id_InUse; /* Flag, zero if not in use */
}; /* InfoData */
!Process
/include/libraries/dosextens.h
struct Process {
struct Task pr_Task;
struct MsgPort pr_MsgPort; /* This is BPTR address from DOS functions */
WORD pr_Pad; /* Remaining variables on 4 byte boundaries */
BPTR pr_SegList; /* Array of seg lists used by this process */
LONG pr_StackSize; /* Size of process stack in bytes */
APTR pr_GlobVec; /* Global vector for this process (BCPL) */
LONG pr_TaskNum; /* CLI task number of zero if not a CLI */
BPTR pr_StackBase; /* Ptr to high memory end of process stack */
LONG pr_Result2; /* Value of secondary result from last call */
BPTR pr_CurrentDir; /* Lock associated with current directory */
BPTR pr_CIS; /* Current CLI Input Stream */
BPTR pr_COS; /* Current CLI Output Stream */
APTR pr_ConsoleTask; /* Console handler process for current window*/
APTR pr_FileSystemTask; /* File handler process for current drive */
BPTR pr_CLI; /* pointer to ConsoleLineInterpreter */
APTR pr_ReturnAddr; /* pointer to previous stack frame */
APTR pr_PktWait; /* Function to be called when awaiting msg */
APTR pr_WindowPtr; /* Window for error printing */
}; /* Process */
!FileHandle
/include/libraries/dosextens.h
struct FileHandle {
struct Msg *fh_Link; /* EXEC message */
struct MsgPort *fh_Port; /* Reply port for the packet */
struct MsgPort *fh_Type; /* Port to do PutMsg() to
* Address is negative if a plain file */
LONG fh_Buf;
LONG fh_Pos;
LONG fh_End;
LONG fh_Funcs;
#define fh_Func1 fh_Funcs
LONG fh_Func2;
LONG fh_Func3;
LONG fh_Args;
#define fh_Arg1 fh_Args
LONG fh_Arg2;
}; /* FileHandle */
!DosPacket
/include/libraries/dosextens.h
struct DosPacket {
struct Msg *dp_Link; /* EXEC message */
struct MsgPort *dp_Port; /* Reply port for the packet */
/* Must be filled in each send. */
LONG dp_Type; /* See ACTION_... below and
* 'R' means Read, 'W' means Write to the
* file system */
LONG dp_Res1; /* For file system calls this is the result
* that would have been returned by the
* function, e.g. Write ('W') returns actual
* length written */
LONG dp_Res2; /* For file system calls this is what would
* have been returned by IoErr() */
/* Device packets common equivalents */
#define dp_Action dp_Type
#define dp_Status dp_Res1
#define dp_Status2 dp_Res2
#define dp_BufAddr dp_Arg1
LONG dp_Arg1;
LONG dp_Arg2;
LONG dp_Arg3;
LONG dp_Arg4;
LONG dp_Arg5;
LONG dp_Arg6;
LONG dp_Arg7;
}; /* DosPacket */
!StandardPacket
/include/libraries/dosextens.h
struct StandardPacket {
struct Message sp_Msg;
struct DosPacket sp_Pkt;
}; /* StandardPacket */
!DosLibrary
/include/libraries/dosextens.h
struct DosLibrary {
struct Library dl_lib;
APTR dl_Root; /* Pointer to RootNode, described below */
APTR dl_GV; /* Pointer to BCPL global vector */
LONG dl_A2; /* Private register dump of DOS */
LONG dl_A5;
LONG dl_A6;
}; /* DosLibrary */
!RootNode
/include/libraries/dosextens.h
struct RootNode {
BPTR rn_TaskArray; /* [0] is max number of CLI's
* [1] is APTR to process id of CLI 1
* [n] is APTR to process id of CLI n */
BPTR rn_ConsoleSegment; /* SegList for the CLI */
struct DateStamp rn_Time; /* Current time */
LONG rn_RestartSeg; /* SegList for the disk validator process */
BPTR rn_Info; /* Pointer ot the Info structure */
}; /* RootNode */
!DosInfo
/include/libraries/dosextens.h
struct DosInfo {
BPTR di_McName; /* Network name of this machine; currently 0 */
BPTR di_DevInfo; /* Device List */
BPTR di_Devices; /* Currently zero */
BPTR di_Handlers; /* Currently zero */
APTR di_NetHand; /* Network handler processid; currently zero */
}; /* DosInfo */
!CommandLineInterface
/include/libraries/dosextens.h
struct CommandLineInterface {
LONG cli_Result2; /* Value of IoErr from last command */
BSTR cli_SetName; /* Name of current directory */
BPTR cli_CommandDir; /* Lock associated with command directory */
LONG cli_ReturnCode; /* Return code from last command */
BSTR cli_CommandName; /* Name of current command */
LONG cli_FailLevel; /* Fail level (set by FAILAT) */
BSTR cli_Prompt; /* Current prompt (set by PROMPT) */
BPTR cli_StandardInput; /* Default (terminal) CLI input */
BPTR cli_CurrentInput; /* Current CLI input */
BSTR cli_CommandFile; /* Name of EXECUTE command file */
LONG cli_Interactive; /* Boolean; True if prompts required */
LONG cli_Background; /* Boolean; True if CLI created by RUN */
BPTR cli_CurrentOutput; /* Current CLI output */
LONG cli_DefaultStack; /* Stack size to be obtained in long words */
BPTR cli_StandardOutput; /* Default (terminal) CLI output */
BPTR cli_Module; /* SegList of currently loaded command */
}; /* CommandLineInterface */
!DeviceList
/include/libraries/dosextens.h
struct DeviceList {
BPTR dl_Next; /* bptr to next device list */
LONG dl_Type; /* see DLT below */
struct MsgPort * dl_Task; /* ptr to handler task */
BPTR dl_Lock; /* not for volumes */
struct DateStamp dl_VolumeDate; /* creation date */
BPTR dl_LockList; /* outstanding locks */
LONG dl_DiskType; /* 'DOS', etc */
LONG dl_unused;
BSTR * dl_Name; /* bptr to bcpl name */
};
!FileLock
/include/libraries/dosextens.h
struct FileLock {
BPTR fl_Link; /* bcpl pointer to next lock */
LONG fl_Key; /* disk block number */
LONG fl_Access; /* exclusive or shared */
struct MsgPort * fl_Task; /* handler task's port */
BPTR fl_Volume; /* bptr to a DeviceList */
};
!FontContents
/include/libraries/diskfont.h
struct FontContents {
char fc_FileName[MAXFONTPATH];
UWORD fc_YSize;
UBYTE fc_Style;
UBYTE fc_Flags;
};
!FontContentsHeader
/include/libraries/diskfont.h
struct FontContentsHeader {
UWORD fch_FileID; /* FCH_ID */
UWORD fch_NumEntries; /* the number of FontContents elements */
/* struct FontContents fch_FC[]; */
};
!DiskFontHeader
/include/libraries/diskfont.h
struct DiskFontHeader {
/* the following 8 bytes are not actually considered a part of the
/* DiskFontHeader, but immediately preceed it. The NextSegment is supplied
/* by the linker/loader, and the ReturnCode is the code at the beginning
/* of the font in case someone runs it...
/* ULONG dfh_NextSegment;/* actually a BPTR */
/* ULONG dfh_ReturnCode; /* MOVEQ #0,D0 : RTS */
/* here then is the official start of the DiskFontHeader... */
struct Node dfh_DF; /* node to link disk fonts */
UWORD dfh_FileID; /* DFH_ID */
UWORD dfh_Revision; /* the font revision */
LONG dfh_Segment; /* the segment address when loaded */
char dfh_Name[MAXFONTNAME]; /* the font name (null terminated) */
struct TextFont dfh_TF;/* loaded TextFont structure */
};
!AvailFonts
/include/libraries/diskfont.h
struct AvailFonts {
UWORD af_Type; /* MEMORY or DISK */
struct TextAttr af_Attr; /* text attributes for font */
};
!AvailFontsHeader
/include/libraries/diskfont.h
struct AvailFontsHeader {
UWORD afh_NumEntries; /* number of AvailFonts elements */
/* struct AvailFonts afh_AF[]; */
};
!SendPacket
/include/workbench/workbenchbase.h
struct SendPacket {
UWORD sp_Type; /* for ioloop */
struct Message sp_Message;
UWORD sp_pad;
LONG sp_Data[PKT_LENGTH];
};
!WorkbenchBase
/include/workbench/workbenchbase.h
struct WorkbenchBase {
struct Library wb_Library;
/* the work bench status flags */
UWORD wb_Shifted : 1; /* the shift key is down */
UWORD wb_Dragging : 1; /* not used?? */
UWORD wb_DoubleClick : 1; /* we just double clicked */
UWORD wb_SpecialGadget : 1; /* last gadget was special */
UWORD wb_InputTrashed : 1; /* Don't believe SELECTUP */
UWORD wb_ErrorDisplayed : 1; /* ErrorTitle is up */
UWORD wb_NameChange : 1; /* Name Change win is up */
UWORD wb_Closed : 1; /* WB screen is closed */
UWORD wb_KPrintfOK : 1; /* ok to send kprintf's */
/* our three major lists. Every object is on the master list.
* The highlighted (selected) icons are on the select list.
* all disks that we have "active" are on the active list.
*/
struct List wb_MasterList;
struct List wb_SelectList;
struct List wb_ActiveDisks;
struct List wb_UtilityList;
/* two string buffers to save us from allocating memory */
/* THESE MUST BE LONG WORD ALLIGNED */
UBYTE wb_Buf0[WBBUFSIZE];
UBYTE wb_Buf1[WBBUFSIZE];
struct SendPacket wb_SendPacket;
/* longword allign this stuff */
BYTE wb_UpdateNestCnt;
BYTE wb_DiskIONestCnt;
/* all of our library bases */
APTR wb_SysBase;
APTR wb_GfxBase;
APTR wb_IntuitionBase;
APTR wb_IconBase;
APTR wb_DOSBase;
APTR wb_MathBase;
APTR wb_LayersBase;
APTR wb_TimerBase;
/* we really want the device list, but it changes too often */
struct DosInfo * wb_DosInfo;
/* a pointer to a timer request, so we can free it later */
struct timerequest *wb_TimerRequest;
/* the mouse position of the last select press */
UWORD wb_XOffset;
UWORD wb_YOffset;
/* the base of the workbench object tree */
struct WBObject * wb_RootObject;
/* some current pointers -- some of these should be deleted */
struct Gadget * wb_CurrentGadget;
struct Window * wb_CurrentWindow;
struct WBObject * wb_CurrentObject;
/* alternate pointer images */
USHORT * wb_SelectPointer;
USHORT * wb_WaitPointer;
/* misc stuff */
struct Menu * wb_MenuStrip;
char * wb_CurrentError;
ULONG wb_LastFreeMem;
struct TextFont * wb_TextFont;
struct CoRoutine * wb_CoCurrent;
/* images must be in chip memory */
struct Image wb_GadgetImage[4];
USHORT wb_GadgetData[4][8];
/* two message ports -- one for intuition, and one for all reasonable
* applications that let you allocate your messages yourself....
*/
struct MsgPort wb_WorkbenchPort;
struct MsgPort wb_IntuiPort;
/* the last time we saw a key-down */
struct timeval wb_Tick;
/* the screen title */
UBYTE wb_ScreenTitle[60];
/* what we need to paint text */
struct RastPort wb_TextRast;
/* the argument that we were initialized with */
ULONG wb_Argument;
/* the workbench task */
ULONG wb_Task;
};
!ActiveDisk
/include/workbench/workbenchbase.h
struct ActiveDisk {
struct Node ad_Node;
UBYTE ad_Active;
UBYTE ad_pad;
struct MsgPort * ad_Handler;
UBYTE * ad_Name;
struct WBObject * ad_Object;
BPTR ad_Volume;
struct InfoData ad_Info;
struct DateStamp ad_CreateTime;
};
!WBStartup
/include/workbench/startup.h
struct WBStartup {
struct Message sm_Message; /* a standard message structure */
struct MsgPort * sm_Process; /* the process descriptor for you */
BPTR sm_Segment; /* a descriptor for your code */
LONG sm_NumArgs; /* the number of elements in ArgList */
char * sm_ToolWindow; /* description of window */
struct WBArg * sm_ArgList; /* the arguments themselves */
};
!WBArg
/include/workbench/startup.h
struct WBArg {
BPTR wa_Lock; /* a lock descriptor */
BYTE * wa_Name; /* a string relative to that lock */
};
!DrawerData
/include/workbench/workbench.h
struct DrawerData {
struct NewWindow dd_NewWindow; /* args to open window */
LONG dd_CurrentX; /* current x coordinate of origin */
LONG dd_CurrentY; /* current y coordinate of origin */
LONG dd_MinX; /* smallest x coordinate in window */
LONG dd_MinY; /* smallest y coordinate in window */
LONG dd_MaxX; /* largest x coordinate in window */
LONG dd_MaxY; /* largest y coordinate in window */
struct Gadget dd_HorizScroll;
struct Gadget dd_VertScroll;
struct Gadget dd_UpMove;
struct Gadget dd_DownMove;
struct Gadget dd_LeftMove;
struct Gadget dd_RightMove;
struct Image dd_HorizImage;
struct Image dd_VertImage;
struct PropInfo dd_HorizProp;
struct PropInfo dd_VertProp;
struct Window * dd_DrawerWin; /* pointer to drawers window */
struct WBObject * dd_Object; /* back pointer to drawer object */
struct List dd_Children; /* where our children hang out */
LONG dd_Lock;
};
!DiskObject
/include/workbench/workbench.h
struct DiskObject {
UWORD do_Magic; /* a magic number at the start of the file */
UWORD do_Version; /* a version number, so we can change it */
struct Gadget do_Gadget; /* a copy of in core gadget */
enum WBObjectType do_Type;
char * do_DefaultTool;
char ** do_ToolTypes;
LONG do_CurrentX;
LONG do_CurrentY;
struct DrawerData * do_DrawerData;
char * do_ToolWindow; /* only applies to tools */
LONG do_StackSize; /* only applies to tools */
};
!FreeList
/include/workbench/workbench.h
struct FreeList {
WORD fl_NumFree;
struct List fl_MemList;
};
!WBObject
/include/workbench/workbench.h
struct WBObject {
struct Node wo_MasterNode; /* all objects are on this list */
struct Node wo_Siblings; /* list of drawer members */
struct Node wo_SelectNode; /* list of all selected objects */
struct Node wo_UtilityNode; /* function specific linkages */
struct WBObject * wo_Parent;
/* object flags */
UWORD wo_IconDisp:1; /* icon is currently in a window */
UWORD wo_DrawerOpen:1;/* we're a drawer, and it is open */
UWORD wo_Selected:1; /* our icon is selected */
UWORD wo_Background:1;/* set if icon is in background */
enum WBObjectType wo_Type; /* what flavor object is this? */
USHORT wo_UseCount; /* number of references to this obj */
char * wo_Name; /* this object's textual name */
SHORT wo_NameXOffset; /* where to put the name */
SHORT wo_NameYOffset;
char * wo_DefaultTool;
struct DrawerData * wo_DrawerData; /* if this is a drawer or disk */
struct Window * wo_IconWin; /* each object's icon lives here */
LONG wo_CurrentX; /* virtual X in drawer */
LONG wo_CurrentY; /* virtual Y in drawer */
char ** wo_ToolTypes; /* the types for this tool */
struct Gadget wo_Gadget; /* NOT a ptr, but an instance of it */
struct FreeList wo_FreeList; /* this objects free list */
char * wo_ToolWindow; /* character string for tool's window */
LONG wo_StackSize; /* how much stack to give to this */
LONG wo_Lock; /* if this tool is in the backdrop */
};
!Library
/include/exec/libraries.h
struct Library {
struct Node lib_Node;
UBYTE lib_Flags;
UBYTE lib_pad;
UWORD lib_NegSize; /* number of bytes before library */
UWORD lib_PosSize; /* number of bytes after library */
UWORD lib_Version;
UWORD lib_Revision;
APTR lib_IdString;
ULONG lib_Sum; /* the checksum itself */
UWORD lib_OpenCnt; /* number of current opens */
};
!ExecBase
/include/exec/execbase.h
struct ExecBase {
struct Library LibNode;
UWORD SoftVer; /* soft (RAM) revision of EXEC */
WORD LowMemChkSum;
ULONG ChkBase; /* system base pointer complement */
APTR ColdCapture; /* coldstart soft vector */
APTR CoolCapture;
APTR WarmCapture;
APTR SysStkUpper; /* system stack base (upper bound) */
APTR SysStkLower; /* top of system stack (lower bound) */
ULONG MaxLocMem;
APTR DebugEntry;
APTR DebugData;
APTR AlertData;
APTR RsvdExt;
UWORD ChkSum;
/****** Interrupt Related ***************************************/
struct IntVector IntVects[16];
/****** System Variables ****************************************/
struct Task *ThisTask; /* pointer to current task */
ULONG IdleCount; /* idle counter */
ULONG DispCount; /* dispatch counter */
UWORD Quantum; /* time slice quantum */
UWORD Elapsed; /* current quantum ticks */
UWORD SysFlags; /* misc system flags */
BYTE IDNestCnt; /* interrupt disable nesting count */
BYTE TDNestCnt; /* task disable nesting count */
UWORD AttnFlags; /* interrupt attention */
UWORD AttnResched; /* rescheduling attention */
APTR ResModules; /* resident module array pointer */
APTR TaskTrapCode;
APTR TaskExceptCode;
APTR TaskExitCode;
ULONG TaskSigAlloc;
UWORD TaskTrapAlloc;
/****** System Lists ********************************************/
struct List MemList;
struct List ResourceList;
struct List DeviceList;
struct List IntrList;
struct List LibList;
struct List PortList;
struct List TaskReady;
struct List TaskWait;
struct SoftIntList SoftInts[5];
/****** Other Globals *******************************************/
LONG LastAlert[4];
LONG ExecBaseReserved[8];
};
!Interrupt
/include/exec/interrupts.h
struct Interrupt {
struct Node is_Node;
APTR is_Data; /* server data segment */
VOID (*is_Code)(); /* server code entry */
};
!IntVector
/include/exec/interrupts.h
struct IntVector { /* For EXEC use ONLY! */
APTR iv_Data;
VOID (*iv_Code)();
struct Node *iv_Node;
};
!SoftIntList
/include/exec/interrupts.h
struct SoftIntList { /* For EXEC use ONLY! */
struct List sh_List;
UWORD sh_Pad;
};
!Device
/include/exec/devices.h
struct Device {
struct Library dd_Library;
};
!Unit
/include/exec/devices.h
struct Unit {
struct MsgPort *unit_MsgPort; /* queue for unprocessed messages */
UBYTE unit_flags;
UBYTE unit_pad;
UWORD unit_OpenCnt; /* number of active opens */
};
!Resident
/include/exec/resident.h
struct Resident {
UWORD rt_MatchWord; /* word to match on (ILLEGAL) */
struct Resident *rt_MatchTag; /* pointer to the above */
APTR rt_EndSkip; /* address to continue scan */
UBYTE rt_Flags; /* various tag flags */
UBYTE rt_Version; /* release version number */
UBYTE rt_Type; /* type of module (NT_mumble) */
BYTE rt_Pri; /* initialization priority */
char *rt_Name; /* pointer to node name */
char *rt_IdString; /* pointer to ident string */
APTR rt_Init; /* pointer to init code */
};
!Node
/include/exec/nodes.h
struct Node {
struct Node *ln_Succ;
struct Node *ln_Pred;
UBYTE ln_Type;
BYTE ln_Pri;
char *ln_Name;
};
!List
/include/exec/lists.h
struct List {
struct Node *lh_Head;
struct Node *lh_Tail;
struct Node *lh_TailPred;
UBYTE lh_Type;
UBYTE l_pad;
};
!IORequest
/include/exec/io.h
struct IORequest {
struct Message io_Message;
struct Device *io_Device; /* device node pointer */
struct Unit *io_Unit; /* unit (driver private)*/
UWORD io_Command; /* device command */
UBYTE io_Flags;
BYTE io_Error; /* error or warning num */
};
!IOStdReq
/include/exec/io.h
struct IOStdReq {
struct Message io_Message;
struct Device *io_Device; /* device node pointer */
struct Unit *io_Unit; /* unit (driver private)*/
UWORD io_Command; /* device command */
UBYTE io_Flags;
BYTE io_Error; /* error or warning num */
ULONG io_Actual; /* actual number of bytes transferred */
ULONG io_Length; /* requested number bytes transferred*/
APTR io_Data; /* points to data area */
ULONG io_Offset; /* offset for block structured devices */
/* ULONG io_Reserved1;
ULONG io_Reserved2;
*/
};
!MsgPort
/include/exec/ports.h
struct MsgPort {
struct Node mp_Node;
UBYTE mp_Flags;
UBYTE mp_SigBit; /* signal bit number */
struct Task *mp_SigTask; /* task to be signalled */
struct List mp_MsgList; /* message linked list */
};
!Message
/include/exec/ports.h
struct Message {
struct Node mn_Node;
struct MsgPort *mn_ReplyPort; /* message reply port */
UWORD mn_Length; /* message len in bytes */
};
!MemChunk
/include/exec/memory.h
struct MemChunk {
struct MemChunk *mc_Next; /* pointer to next chunk */
ULONG mc_Bytes; /* chunk byte size */
};
!MemHeader
/include/exec/memory.h
struct MemHeader {
struct Node mh_Node;
UWORD mh_Attributes; /* characteristics of this region */
struct MemChunk *mh_First; /* first free region */
APTR mh_Lower; /* lower memory bound */
APTR mh_Upper; /* upper memory bound+1 */
ULONG mh_Free; /* total number of free bytes */
};
!MemEntry
/include/exec/memory.h
struct MemEntry {
union {
ULONG meu_Reqs; /* the AllocMem requirements */
APTR meu_Addr; /* the address of this memory region */
} me_Un;
ULONG me_Length; /* the length of this memory region */
};
!MemList
/include/exec/memory.h
struct MemList {
struct Node ml_Node;
UWORD ml_NumEntries; /* number of entries in this struct */
struct MemEntry ml_ME[1]; /* the first entry */
};
!TextAttr
/include/graphics/text.h
struct TextAttr {
STRPTR ta_Name; /* name of the font */
UWORD ta_YSize; /* height of the font */
UBYTE ta_Style; /* intrinsic font style */
UBYTE ta_Flags; /* font preferences and flags */
};
!TextFont
/include/graphics/text.h
struct TextFont {
struct Message tf_Message; /* reply message for font removal */
/* font name in LN \ used in this */
UWORD tf_YSize; /* font height | order to best */
UBYTE tf_Style; /* font style | match a font */
UBYTE tf_Flags; /* preferences and flags / request. */
UWORD tf_XSize; /* nominal font width */
UWORD tf_Baseline; /* distance from the top of char to baseline */
UWORD tf_BoldSmear; /* smear to affect a bold enhancement */
UWORD tf_Accessors; /* access count */
UBYTE tf_LoChar; /* the first character described here */
UBYTE tf_HiChar; /* the last character described here */
APTR tf_CharData; /* the bit character data */
UWORD tf_Modulo; /* the row modulo for the strike font data */
APTR tf_CharLoc; /* ptr to location data for the strike font */
/* 2 words: bit offset then size */
APTR tf_CharSpace; /* ptr to words of proportional spacing data */
APTR tf_CharKern; /* ptr to words of kerning data */
};
!Layer
/include/graphics/clip.h
struct Layer
{
struct Layer *front,*back; /* ignored by roms */
struct ClipRect *ClipRect; /* read by roms to find first cliprect */
struct RastPort *rp; /* ignored by roms, I hope */
struct Rectangle bounds; /* ignored by roms */
UBYTE Lock; /* roms, obey locking/unlocking convention */
UBYTE LockCount; /* roms can nest their own locks and still work */
UBYTE LayerLockCount; /* lock counter used by layer software */
UBYTE reserved;
UWORD reserved1;
UWORD Flags; /* obscured ?, Virtual BitMap? */
struct BitMap *SuperBitMap;
struct ClipRect *SuperClipRect; /* super bitmap cliprects if VBitMap != 0*/
/* else damage cliprect list for refresh */
APTR Window; /* reserved for user interface use */
SHORT Scroll_X,Scroll_Y;
struct MsgPort LockPort;
struct Message LockMessage;
struct MsgPort ReplyPort;
struct Message l_LockMessage;
struct Region *DamageList; /* list of rectangles to refresh through */
struct ClipRect *_cliprects; /* system use during refresh */
APTR _p1; /* system use, reserved */
};
!ClipRect
/include/graphics/clip.h
struct ClipRect
{
struct ClipRect *Next; /* roms used to find next ClipRect */
struct ClipRect *prev; /* ignored by roms, used by windowlib */
struct Layer *lobs; /* ignored by roms, used by windowlib */
struct BitMap *BitMap;
struct Rectangle bounds; /* set up by windowlib, used by roms */
struct ClipRect *_p1,*_p2; /* system reserved */
LONG reserved; /* system use */
};
!RegionRectangle
/include/graphics/regions.h
struct RegionRectangle
{
struct RegionRectangle *Next,*Prev;
struct Rectangle bounds;
};
!Region
/include/graphics/regions.h
struct Region
{
struct Rectangle bounds;
struct RegionRectangle *RegionRectangle;
};
!GfxBase
/include/graphics/gfxbase.h
struct GfxBase
{
struct Library LibNode;
struct View *ActiView;
struct copinit *copinit; /* ptr to copper start up list */
long *cia; /* for 8520 resource use */
long *blitter; /* for future blitter resource use */
UWORD *LOFlist;
UWORD *SHFlist;
struct bltnode *blthd,*blttl;
struct bltnode *bsblthd,*bsblttl;
struct Interrupt vbsrv,timsrv,bltsrv;
struct List TextFonts;
struct TextFont *DefaultFont;
UWORD Modes; /* copy of current first bplcon0 */
BYTE VBlank;
BYTE Debug;
SHORT BeamSync;
SHORT system_bplcon0; /* this is initialized to 0 */
/* it is ored into each bplcon0 for display */
UBYTE SpriteReserved;
UBYTE bytereserved;
/* candidates for removal */
short Flags;
SHORT BlitLock;
short BlitNest;
struct List BlitWaitQ;
struct Task *BlitOwner;
struct List TOF_WaitQ;
ULONG reserved[2]; /* for future use */
};
!CopIns
/include/graphics/copper.h
struct CopIns
{
short OpCode; /* 0 = move, 1 = wait */
union
{
struct CopList *nxtlist;
struct
{
union
{
short VWaitPos; /* vertical beam wait */
short DestAddr; /* destination address of copper move */
} u1;
union
{
short HWaitPos; /* horizontal beam wait position */
short DestData; /* destination immediate data to send */
} u2;
} u4;
} u3;
};
!cprlist
/include/graphics/copper.h
struct cprlist
{
struct cprlist *Next;
short *start; /* start of copper list */
short max; /* number of long instructions */
};
!CopList
/include/graphics/copper.h
struct CopList
{
struct CopList *Next; /* next block for this copper list */
struct CopList *_CopList; /* system use */
struct ViewPort *_ViewPort; /* system use */
struct CopIns *CopIns; /* start of this block */
struct CopIns *CopPtr; /* intermediate ptr */
UWORD *CopLStart; /* mrgcop fills this in for Long Frame*/
UWORD *CopSStart; /* mrgcop fills this in for Short Frame*/
SHORT Count; /* intermediate counter */
SHORT MaxCount; /* max # of copins for this block */
SHORT DyOffset; /* offset this copper list vertical waits */
};
!UCopList
/include/graphics/copper.h
struct UCopList
{
struct UCopList *Next;
struct CopList *FirstCopList; /* head node of this copper list */
struct CopList *CopList; /* node in use */
};
!copinit
/include/graphics/copper.h
struct copinit
{
SHORT diagstrt[4]; /* copper list for first bitplane */
SHORT sprstrtup[(2*8*2)+2+(2*2)+2];
SHORT sprstop[2];
};
!SimpleSprite
/include/graphics/sprite.h
struct SimpleSprite
{
UWORD *posctldata;
UWORD height;
UWORD x,y; /* current position */
UWORD num;
};
!ColorMap
/include/graphics/view.h
struct ColorMap
{
UBYTE Flags;
UBYTE Type;
UWORD Count;
APTR ColorTable;
};
!ViewPort
/include/graphics/view.h
struct ViewPort
{
struct ViewPort *Next;
struct ColorMap *ColorMap; /* table of colors for this viewport */
/* if this is nil, MakeVPort assumes default values */
struct CopList *DspIns; /* user by MakeView() */
struct CopList *SprIns; /* used by sprite stuff */
struct CopList *ClrIns; /* used by sprite stuff */
struct UCopList *UCopIns; /* User copper list */
SHORT DWidth,DHeight;
SHORT DxOffset,DyOffset;
UWORD Modes;
UWORD reserved;
struct RasInfo *RasInfo;
};
!View
/include/graphics/view.h
struct View
{
struct ViewPort *ViewPort;
struct cprlist *LOFCprList; /* used for interlaced and noninterlaced */
struct cprlist *SHFCprList; /* only used during interlace */
short DyOffset,DxOffset; /* for complete View positioning */
/* offsets are +- adjustments to standard #s */
UWORD Modes; /* such as INTERLACE, GENLOC */
};
!RasInfo
/include/graphics/view.h
struct RasInfo /* used by callers to and InitDspC() */
{
struct RasInfo *Next; /* used for dualpf */
struct BitMap *BitMap;
SHORT RxOffset,RyOffset; /* scroll offsets in this BitMap */
};
!AreaInfo
/include/graphics/rastport.h
struct AreaInfo
{
SHORT *VctrTbl; /* ptr to start of vector table */
SHORT *VctrPtr; /* ptr to current vertex */
BYTE *FlagTbl; /* ptr to start of vector flag table */
BYTE *FlagPtr; /* ptrs to areafill flags */
SHORT Count; /* number of vertices in list */
SHORT MaxCount; /* AreaMove/Draw will not allow Count>MaxCount */
SHORT FirstX,FirstY; /* first point for this polygon */
};
!TmpRas
/include/graphics/rastport.h
struct TmpRas
{
BYTE *RasPtr;
LONG Size;
/* other misc junk for freelist etc. */
};
!GelsInfo
/include/graphics/rastport.h
struct GelsInfo
{
BYTE sprRsrvd; /* flag of which sprites to reserve from vsprite system */
UBYTE Flags; /* system use */
struct VSprite *gelHead, *gelTail; /* dummy vSprites for list management */
/* pointer to array of 8 WORDS for sprite available lines */
WORD *nextLine;
/* pointer to array of 8 pointers for color-last-assigned to vSprites */
WORD **lastColor;
struct collTable *collHandler; /* addresses of collision routines */
short leftmost, rightmost, topmost, bottommost;
APTR firstBlissObj,lastBlissObj; /* system use only */
};
!RastPort
/include/graphics/rastport.h
struct RastPort
{
struct Layer *Layer;
struct BitMap *BitMap;
USHORT *AreaPtrn; /* ptr to areafill pattern */
struct TmpRas *TmpRas;
struct AreaInfo *AreaInfo;
struct GelsInfo *GelsInfo;
UBYTE Mask; /* write mask for this raster */
BYTE FgPen; /* foreground pen for this raster */
BYTE BgPen; /* background pen */
BYTE AOlPen; /* areafill outline pen */
BYTE DrawMode; /* drawing mode for fill, lines, and text */
BYTE AreaPtSz; /* 2^n words for areafill pattern */
BYTE linpatcnt; /* current line drawing pattern preshift */
BYTE dummy;
USHORT Flags; /* miscellaneous control bits */
USHORT LinePtrn; /* 16 bits for textured lines */
SHORT cp_x, cp_y; /* current pen position */
UBYTE minterms[8];
SHORT PenWidth;
SHORT PenHeight;
struct TextFont *Font; /* current font address */
UBYTE AlgoStyle; /* the algorithmically generated style */
UBYTE TxFlags; /* text specific flags */
UWORD TxHeight; /* text height */
UWORD TxWidth; /* text nominal width */
UWORD TxBaseline; /* text baseline */
WORD TxSpacing; /* text spacing (per character) */
APTR *RP_User;
UWORD wordreserved[7]; /* used to be a node */
ULONG longreserved[2];
UBYTE reserved[8]; /* for future use */
};
!Layer
/include/graphics/layers.h
struct Layer_Info
{
struct Layer *top_layer;
struct Layer *check_lp; /* system use */
struct Layer *obs; /* system use */
struct MsgPort RP_ReplyPort; /* for rastport locking */
struct MsgPort LockPort; /* for screen locking */
UBYTE Lock;
UBYTE broadcast; /* bunch of messages sent */
UBYTE LockNest;
UBYTE pad;
struct Task *Locker;
UBYTE bytereserved[2];
UWORD wordreserved[2]; /* used to be a node in here someplace */
ULONG longreserved[2];
};
!Rectangle
/include/graphics/gfx.h
struct Rectangle
{
SHORT MinX,MinY;
SHORT MaxX,MaxY;
};
!BitMap
/include/graphics/gfx.h
struct BitMap
{
UWORD BytesPerRow;
UWORD Rows;
UBYTE Flags;
UBYTE Depth;
UWORD pad;
PLANEPTR Planes[8];
};
!Isrvstr
/include/graphics/graphint.h
struct Isrvstr
{
struct Node is_Node;
struct Isrvstr *Iptr; /* passed to srvr by os */
int (*code)();
int (*ccode)();
int Carg;
};
!VSprite
/include/graphics/gels.h
struct VSprite
{
/* --------------------- SYSTEM VARIABLES --------------------------------- */
/* GEL linked list forward/backward pointers sorted by y,x value */
struct VSprite *NextVSprite;
struct VSprite *PrevVSprite;
/* GEL draw list constructed in the order the Bobs are actually drawn, then
* list is copied to clear list
* must be here in VSprite for system boundary detection
*/
struct VSprite *DrawPath; /* pointer of overlay drawing */
struct VSprite *ClearPath; /* pointer for overlay clearing */
/* the VSprite positions are defined in (y,x) order to make sorting
* sorting easier, since (y,x) as a long integer
*/
WORD OldY, OldX; /* previous position */
/* --------------------- COMMON VARIABLES --------------------------------- */
WORD Flags; /* VSprite flags */
/* --------------------- USER VARIABLES ----------------------------------- */
/* the VSprite positions are defined in (y,x) order to make sorting
* sorting easier, since (y,x) as a long integer
*/
WORD Y, X; /* screen position */
WORD Height;
WORD Width; /* number of words per row of image data */
WORD Depth; /* number of planes of data */
WORD MeMask; /* which types can collide with this VSprite */
WORD HitMask; /* which types this VSprite can collide with */
WORD *ImageData; /* pointer to VSprite image */
/* borderLine is the one-dimensional logical OR of all
* the VSprite bits, used for fast collision detection of edge
*/
WORD *BorderLine; /* logical OR of all VSprite bits */
WORD *CollMask; /* similar to above except this is a matrix */
/* pointer to this VSprite's color definitions (not used by Bobs) */
WORD *SprColors;
struct Bob *VSBob; /* points home if this VSprite is part of a Bob */
/* planePick flag: set bit selects a plane from image, clear bit selects
* use of shadow mask for that plane
* OnOff flag: if using shadow mask to fill plane, this bit (corresponding
* to bit in planePick) describes whether to fill with 0's or 1's
* There are two uses for these flags:
* - if this is the VSprite of a Bob, these flags describe how the Bob
* is to be drawn into memory
* - if this is a simple VSprite and the user intends on setting the
* MUSTDRAW flag of the VSprite, these flags must be set too to describe
* which color registers the user wants for the image
*/
BYTE PlanePick;
BYTE PlaneOnOff;
VUserStuff VUserExt; /* user definable: see note above */
};
!Bob
/include/graphics/gels.h
struct Bob /* blitter-objects */
{
/* --------------------- SYSTEM VARIABLES --------------------------------- */
/* --------------------- COMMON VARIABLES --------------------------------- */
WORD Flags; /* general purpose flags (see definitions below) */
/* --------------------- USER VARIABLES ----------------------------------- */
WORD *SaveBuffer; /* pointer to the buffer for background save */
/* used by Bobs for "cookie-cutting" and multi-plane masking */
WORD *ImageShadow;
/* pointer to BOBs for sequenced drawing of Bobs
* for correct overlaying of multiple component animations
*/
struct Bob *Before; /* draw this Bob before Bob pointed to by before */
struct Bob *After; /* draw this Bob after Bob pointed to by after */
struct VSprite *BobVSprite; /* this Bob's VSprite definition */
struct AnimComp *BobComp; /* pointer to this Bob's AnimComp def */
struct DBufPacket *DBuffer; /* pointer to this Bob's dBuf packet */
BUserStuff BUserExt; /* Bob user extension */
};
!AnimComp
/include/graphics/gels.h
struct AnimComp
{
/* --------------------- SYSTEM VARIABLES --------------------------------- */
/* --------------------- COMMON VARIABLES --------------------------------- */
WORD Flags; /* AnimComp flags for system & user */
/* timer defines how long to keep this component active:
* if set non-zero, timer decrements to zero then switches to nextSeq
* if set to zero, AnimComp never switches
*/
WORD Timer;
/* --------------------- USER VARIABLES ----------------------------------- */
/* initial value for timer when the AnimComp is activated by the system */
WORD TimeSet;
/* pointer to next and previous components of animation object */
struct AnimComp *NextComp;
struct AnimComp *PrevComp;
/* pointer to component component definition of next image in sequence */
struct AnimComp *NextSeq;
struct AnimComp *PrevSeq;
WORD (*AnimCRoutine)(); /* address of special animation procedure */
WORD YTrans; /* initial y translation (if this is a component) */
WORD XTrans; /* initial x translation (if this is a component) */
struct AnimOb *HeadOb;
struct Bob *AnimBob;
};
!AnimOb
/include/graphics/gels.h
struct AnimOb
{
/* --------------------- SYSTEM VARIABLES --------------------------------- */
struct AnimOb *NextOb, *PrevOb;
/* number of calls to Animate this AnimOb has endured */
LONG Clock;
WORD AnOldY, AnOldX; /* old y,x coordinates */
/* --------------------- COMMON VARIABLES --------------------------------- */
WORD AnY, AnX; /* y,x coordinates of the AnimOb */
/* --------------------- USER VARIABLES ----------------------------------- */
WORD YVel, XVel; /* velocities of this object */
WORD YAccel, XAccel; /* accelerations of this object */
WORD RingYTrans, RingXTrans; /* ring translation values */
WORD (*AnimORoutine)(); /* address of special animation procedure */
struct AnimComp *HeadComp; /* pointer to first component */
AUserStuff AUserExt; /* AnimOb user extension */
};
!DBufPacket
/include/graphics/gels.h
struct DBufPacket
{
WORD BufY, BufX; /* save the other buffers screen coordinates */
struct VSprite *BufPath; /* carry the draw path over the gap */
/* these pointers must be filled in by the user */
/* pointer to other buffer's background save buffer */
WORD *BufBuffer;
};
!collTable
/include/graphics/gels.h
struct collTable
{
int (*collPtrs[16])();
};
!Menu
/include/intuition/intuition.h
struct Menu
{
struct Menu *NextMenu; /* same level */
SHORT LeftEdge, TopEdge; /* position of the select box */
SHORT Width, Height; /* dimensions of the select box */
USHORT Flags; /* see flag definitions below */
BYTE *MenuName; /* text for this Menu Header */
struct MenuItem *FirstItem; /* pointer to first in chain */
/* these mysteriously-named variables are for internal use only */
SHORT JazzX, JazzY, BeatX, BeatY;
};
!MenuItem
/include/intuition/intuition.h
struct MenuItem
{
struct MenuItem *NextItem; /* pointer to next in chained list */
SHORT LeftEdge, TopEdge; /* position of the select box */
SHORT Width, Height; /* dimensions of the select box */
USHORT Flags; /* see the defines below */
LONG MutualExclude; /* set bits mean this item excludes that */
APTR ItemFill; /* points to Image, IntuiText, or NULL */
/* when this item is pointed to by the cursor and the items highlight
* mode HIGHIMAGE is selected, this alternate image will be displayed
*/
APTR SelectFill; /* points to Image, IntuiText, or NULL */
BYTE Command; /* only if appliprog sets the COMMSEQ flag */
struct MenuItem *SubItem; /* if non-zero, DrawMenu shows "->" */
/* The NextSelect field represents the menu number of next selected
* item (when user has drag-selected several items)
*/
USHORT NextSelect;
};
!Requester
/include/intuition/intuition.h
struct Requester
{
/* the ClipRect and BitMap and used for rendering the requester */
struct Requester *OlderRequest;
SHORT LeftEdge, TopEdge; /* dimensions of the entire box */
SHORT Width, Height; /* dimensions of the entire box */
SHORT RelLeft, RelTop; /* for Pointer relativity offsets */
struct Gadget *ReqGadget; /* pointer to a list of Gadgets */
struct Border *ReqBorder; /* the box's border */
struct IntuiText *ReqText; /* the box's text */
USHORT Flags; /* see definitions below */
/* pen number for back-plane fill before draws */
UBYTE BackFill;
struct ClipRect ReqCRect;
/* If the BitMap plane pointers are non-zero, this tells the system
* that the image comes pre-drawn (if the appliprog wants to define
* it's own box, in any shape or size it wants!); this is OK by
* Intuition as long as there's a good correspondence between
* the image and the specified Gadgets
*/
struct BitMap *ImageBMap; /* points to the BitMap of PREDRAWN imagery */
struct BitMap ReqBMap;
};
!Gadget
/include/intuition/intuition.h
struct Gadget
{
struct Gadget *NextGadget; /* next gadget in the list */
SHORT LeftEdge, TopEdge; /* "hit box" of gadget */
SHORT Width, Height; /* "hit box" of gadget */
USHORT Flags; /* see below for list of defines */
USHORT Activation; /* see below for list of defines */
USHORT GadgetType; /* see below for defines */
/* appliprog can specify that the Gadget be rendered as either as Border
* or an Image. This variable points to which (or equals NULL if there's
* nothing to be rendered about this Gadget)
*/
APTR GadgetRender;
/* appliprog can specify "highlighted" imagery rather than algorithmic
* this can point to either Border or Image data
*/
APTR SelectRender;
struct IntuiText *GadgetText; /* text for this gadget */
/* by using the MutualExclude word, the appliprog can describe
* which gadgets mutually-exclude which other ones. The bits
* in MutualExclude correspond to the gadgets in object containing
* the gadget list. If this gadget is selected and a bit is set
* in this gadget's MutualExclude and the gadget corresponding to
* that bit is currently selected (e.g. bit 2 set and gadget 2
* is currently selected) that gadget must be unselected.
* Intuition does the visual unselecting (with checkmarks) and
* leaves it up to the program to unselect internally
*/
LONG MutualExclude; /* set bits mean this gadget excludes that gadget */
/* pointer to a structure of special data required by Proportional,
* String and Integer Gadgets
*/
APTR SpecialInfo;
USHORT GadgetID; /* user-definable ID field */
APTR UserData; /* ptr to general purpose User data (ignored by In) */
};
!PropInfo
/include/intuition/intuition.h
struct PropInfo
{
USHORT Flags; /* general purpose flag bits (see defines below) */
/* You initialize the Pot variables before the Gadget is added to
* the system. Then you can look here for the current settings
* any time, even while User is playing with this Gadget. To
* adjust these after the Gadget is added to the System, use
* ModifyProp(); The Pots are the actual proportional settings,
* where a value of zero means zero and a value of MAXPOT means
* that the Gadget is set to its maximum setting.
*/
USHORT HorizPot; /* 16-bit FixedPoint horizontal quantity percentage */
USHORT VertPot; /* 16-bit FixedPoint vertical quantity percentage */
/* the 16-bit FixedPoint Body variables describe what percentage of
* the entire body of stuff referred to by this Gadget is actually
* shown at one time. This is used with the AUTOKNOB routines,
* to adjust the size of the AUTOKNOB according to how much of
* the data can be seen. This is also used to decide how far
* to advance the Pots when User hits the Container of the Gadget.
* For instance, if you were controlling the display of a 5-line
* Window of text with this Gadget, and there was a total of 15
* lines that could be displayed, you would set the VertBody value to
* (MAXBODY / (TotalLines / DisplayLines)) = MAXBODY / 3.
* Therefore, the AUTOKNOB would fill 1/3 of the container, and
* if User hits the Cotainer outside of the knob, the pot would
* advance 1/3 (plus or minus) If there's no body to show, or
* the total amount of displayable info is less than the display area,
* set the Body variables to the MAX. To adjust these after the
* Gadget is added to the System, use ModifyProp();
*/
USHORT HorizBody; /* horizontal Body */
USHORT VertBody; /* vertical Body */
/* these are the variables that Intuition sets and maintains */
USHORT CWidth; /* Container width (with any relativity absoluted) */
USHORT CHeight; /* Container height (with any relativity absoluted) */
USHORT HPotRes, VPotRes; /* pot increments */
USHORT LeftBorder; /* Container borders */
USHORT TopBorder; /* Container borders */
};
!StringInfo
/include/intuition/intuition.h
struct StringInfo
{
/* you initialize these variables, and then Intuition maintains them */
UBYTE *Buffer; /* the buffer containing the start and final string */
UBYTE *UndoBuffer; /* optional buffer for undoing current entry */
SHORT BufferPos; /* character position in Buffer */
SHORT MaxChars; /* max number of chars in Buffer (including NULL) */
SHORT DispPos; /* Buffer position of first displayed character */
/* Intuition initializes and maintains these variables for you */
SHORT UndoPos; /* character position in the undo buffer */
SHORT NumChars; /* number of characters currently in Buffer */
SHORT DispCount; /* number of whole characters visible in Container */
SHORT CLeft, CTop; /* topleft offset of the container */
struct Layer *LayerPtr; /* the RastPort containing this Gadget */
LONG LongInt;
/* If you want this Gadget to use your own Console keymapping, you
* set the ALTKEYMAP bit in the Activation flags of the Gadget, and then
* set this variable to point to your keymap. If you don't set the
* ALTKEYMAP, you'll get the standard ASCII keymapping.
*/
struct KeyMap *AltKeyMap;
};
!IntuiText
/include/intuition/intuition.h
struct IntuiText
{
UBYTE FrontPen, BackPen; /* the pen numbers for the rendering */
UBYTE DrawMode; /* the mode for rendering the text */
SHORT LeftEdge; /* relative start location for the text */
SHORT TopEdge; /* relative start location for the text */
struct TextAttr *ITextFont; /* if NULL, you accept the default */
UBYTE *IText; /* pointer to null-terminated text */
struct IntuiText *NextText; /* continuation to TxWrite another text */
};
!Border
/include/intuition/intuition.h
struct Border
{
SHORT LeftEdge, TopEdge; /* initial offsets from the origin */
UBYTE FrontPen, BackPen; /* pens numbers for rendering */
UBYTE DrawMode; /* mode for rendering */
BYTE Count; /* number of XY pairs */
SHORT *XY; /* vector coordinate pairs rel to LeftTop*/
struct Border *NextBorder; /* pointer to any other Border too */
};
!Image
/include/intuition/intuition.h
struct Image
{
SHORT LeftEdge; /* starting offset relative to some origin */
SHORT TopEdge; /* starting offsets relative to some origin */
SHORT Width; /* pixel size (though data is word-aligned) */
SHORT Height, Depth; /* pixel sizes */
USHORT *ImageData; /* pointer to the actual word-aligned bits */
/* the PlanePick and PlaneOnOff variables work much the same way as the
* equivalent GELS Bob variables. It's a space-saving
* mechanism for image data. Rather than defining the image data
* for every plane of the RastPort, you need define data only
* for the planes that are not entirely zero or one. As you
* define your Imagery, you will often find that most of the planes
* ARE just as color selectors. For instance, if you're designing
* a two-color Gadget to use colors two and three, and the Gadget
* will reside in a five-plane display, bit plane zero of your
* imagery would be all ones, bit plane one would have data that
* describes the imagery, and bit planes two through four would be
* all zeroes. Using these flags allows you to avoid wasting all
* that memory in this way: first, you specify which planes you
* want your data to appear in using the PlanePick variable. For
* each bit set in the variable, the next "plane" of your image
* data is blitted to the display. For each bit clear in this
* variable, the corresponding bit in PlaneOnOff is examined.
* If that bit is clear, a "plane" of zeroes will be used.
* If the bit is set, ones will go out instead. So, for our example:
* Gadget.PlanePick = 0x02;
* Gadget.PlaneOnOff = 0x01;
* Note that this also allows for generic Gadgets, like the
* System Gadgets, which will work in any number of bit planes.
* Note also that if you want an Image that is only a filled
* rectangle, you can get this by setting PlanePick to zero
* (pick no planes of data) and set PlaneOnOff to describe the pen
* color of the rectangle.
*/
UBYTE PlanePick, PlaneOnOff;
/* if the NextImage variable is not NULL, Intuition presumes that
* it points to another Image structure with another Image to be
* rendered
*/
struct Image *NextImage;
};
!IntuiMessage
/include/intuition/intuition.h
struct IntuiMessage
{
struct Message ExecMessage;
/* the Class bits correspond directly with the IDCMP Flags, except for the
* special bit LONELYMESSAGE (defined below)
*/
ULONG Class;
/* the Code field is for special values like MENU number */
USHORT Code;
/* the Qualifier field is a copy of the current InputEvent's Qualifier */
USHORT Qualifier;
/* IAddress contains particular addresses for Intuition functions, like
* the pointer to the Gadget or the Screen
*/
APTR IAddress;
/* when getting mouse movement reports, any event you get will have the
* the mouse coordinates in these variables. the coordinates are relative
* to the upper-left corner of your Window (GIMMEZEROZERO notwithstanding)
*/
SHORT MouseX, MouseY;
/* the time values are copies of the current system clock time. Micros
* are in units of microseconds, Seconds in seconds.
*/
ULONG Seconds, Micros;
/* the IDCMPWindow variable will always have the address of the Window of
* this IDCMP
*/
struct Window *IDCMPWindow;
/* system-use variable */
struct IntuiMessage *SpecialLink;
};
!Window
/include/intuition/intuition.h
struct Window
{
struct Window *NextWindow; /* for the linked list in a screen */
SHORT LeftEdge, TopEdge; /* screen dimensions of window */
SHORT Width, Height; /* screen dimensions of window */
SHORT MouseY, MouseX; /* relative to upper-left of window */
SHORT MinWidth, MinHeight; /* minimum sizes */
SHORT MaxWidth, MaxHeight; /* maximum sizes */
ULONG Flags; /* see below for defines */
struct Menu *MenuStrip; /* the strip of Menu headers */
UBYTE *Title; /* the title text for this window */
struct Requester *FirstRequest; /* all active Requesters */
struct Requester *DMRequest; /* double-click Requester */
SHORT ReqCount; /* count of reqs blocking Window */
struct Screen *WScreen; /* this Window's Screen */
struct RastPort *RPort; /* this Window's very own RastPort */
/* the border variables describe the window border. If you specify
* GIMMEZEROZERO when you open the window, then the upper-left of the
* ClipRect for this window will be upper-left of the BitMap (with correct
* offsets when in SuperBitMap mode; you MUST select GIMMEZEROZERO when
* using SuperBitMap). If you don't specify ZeroZero, then you save
* memory (no allocation of RastPort, Layer, ClipRect and associated
* Bitmaps), but you also must offset all your writes by BorderTop,
* BorderLeft and do your own mini-clipping to prevent writing over the
* system gadgets
*/
BYTE BorderLeft, BorderTop, BorderRight, BorderBottom;
struct RastPort *BorderRPort;
/* You supply a linked-list of Gadgets for your Window.
* This list DOES NOT include system gadgets. You get the standard
* window system gadgets by setting flag-bits in the variable Flags (see
* the bit definitions below)
*/
struct Gadget *FirstGadget;
/* these are for opening/closing the windows */
struct Window *Parent, *Descendant;
/* sprite data information for your own Pointer
* set these AFTER you Open the Window by calling SetPointer()
*/
USHORT *Pointer; /* sprite data */
BYTE PtrHeight; /* sprite height (not including sprite padding) */
BYTE PtrWidth; /* sprite width (must be less than or equal to 16) */
BYTE XOffset, YOffset; /* sprite offsets */
/* the IDCMP Flags and User's and Intuition's Message Ports */
ULONG IDCMPFlags; /* User-selected flags */
struct MsgPort *UserPort, *WindowPort;
struct IntuiMessage *MessageKey;
UBYTE DetailPen, BlockPen; /* for bar/border/gadget rendering */
/* the CheckMark is a pointer to the imagery that will be used when
* rendering MenuItems of this Window that want to be checkmarked
* if this is equal to NULL, you'll get the default imagery
*/
struct Image *CheckMark;
UBYTE *ScreenTitle; /* if non-null, Screen title when Window is active */
/* These variables have the mouse coordinates relative to the
* inner-Window of GIMMEZEROZERO Windows. This is compared with the
* MouseX and MouseY variables, which contain the mouse coordinates
* relative to the upper-left corner of the Window, GIMMEZEROZERO
* notwithstanding
*/
SHORT GZZMouseX;
SHORT GZZMouseY;
/* these variables contain the width and height of the inner-Window of
* GIMMEZEROZERO Windows
*/
SHORT GZZWidth;
SHORT GZZHeight;
UBYTE *ExtData;
BYTE *UserData; /* general-purpose pointer to User data extension */
};
!NewWindow
/include/intuition/intuition.h
struct NewWindow
{
SHORT LeftEdge, TopEdge; /* screen dimensions of window */
SHORT Width, Height; /* screen dimensions of window */
UBYTE DetailPen, BlockPen; /* for bar/border/gadget rendering */
ULONG IDCMPFlags; /* User-selected IDCMP flags */
ULONG Flags; /* see Window struct for defines */
/* You supply a linked-list of Gadgets for your Window.
* This list DOES NOT include system Gadgets. You get the standard
* system Window Gadgets by setting flag-bits in the variable Flags (see
* the bit definitions under the Window structure definition)
*/
struct Gadget *FirstGadget;
/* the CheckMark is a pointer to the imagery that will be used when
* rendering MenuItems of this Window that want to be checkmarked
* if this is equal to NULL, you'll get the default imagery
*/
struct Image *CheckMark;
UBYTE *Title; /* the title text for this window */
/* the Screen pointer is used only if you've defined a CUSTOMSCREEN and
* want this Window to open in it. If so, you pass the address of the
* Custom Screen structure in this variable. Otherwise, this variable
* is ignored and doesn't have to be initialized.
*/
struct Screen *Screen;
/* SUPER_BITMAP Window? If so, put the address of your BitMap structure
* in this variable. If not, this variable is ignored and doesn't have
* to be initialized
*/
struct BitMap *BitMap;
/* the values describe the minimum and maximum sizes of your Windows.
* these matter only if you've chosen the WINDOWSIZING Gadget option,
* which means that you want to let the User to change the size of
* this Window. You describe the minimum and maximum sizes that the
* Window can grow by setting these variables. You can initialize
* any one these to zero, which will mean that you want to duplicate
* the setting for that dimension (if MinWidth == 0, MinWidth will be
* set to the opening Width of the Window).
* You can change these settings later using SetWindowLimits().
* If you haven't asked for a SIZING Gadget, you don't have to
* initialize any of these variables.
*/
SHORT MinWidth, MinHeight; /* minimums */
SHORT MaxWidth, MaxHeight; /* maximums */
/* the type variable describes the Screen in which you want this Window to
* open. The type value can either be CUSTOMSCREEN or one of the
* system standard Screen Types such as WBENCHSCREEN. See the
* type definitions under the Screen structure
*/
USHORT Type;
};
!Screen
/include/intuition/intuition.h
struct Screen
{
struct Screen *NextScreen; /* linked list of screens */
struct Window *FirstWindow; /* linked list Screen's Windows */
SHORT LeftEdge, TopEdge; /* parameters of the screen */
SHORT Width, Height; /* parameters of the screen */
SHORT MouseY, MouseX; /* position relative to upper-left */
USHORT Flags; /* see definitions below */
UBYTE *Title; /* null-terminated Title text */
UBYTE *DefaultTitle; /* for Windows without ScreenTitle */
/* Bar sizes for this Screen and all Window's in this Screen */
BYTE BarHeight, BarVBorder, BarHBorder, MenuVBorder, MenuHBorder;
BYTE WBorTop, WBorLeft, WBorRight, WBorBottom;
struct TextAttr *Font; /* this screen's default font */
/* the display data structures for this Screen */
struct ViewPort ViewPort; /* describing the Screen's display */
struct RastPort RastPort; /* describing Screen rendering */
struct BitMap BitMap; /* auxiliary graphexcess baggage */
struct Layer_Info LayerInfo; /* each screen gets a LayerInfo */
/* You supply a linked-list of Gadgets for your Screen.
* This list DOES NOT include system Gadgets. You get the standard
* system Screen Gadgets by default
*/
struct Gadget *FirstGadget;
UBYTE DetailPen, BlockPen; /* for bar/border/gadget rendering */
/* the following variable(s) are maintained by Intuition to support the
* DisplayBeep() color flashing technique
*/
USHORT SaveColor0;
/* This layer is for the Screen and Menu bars */
struct Layer *BarLayer;
UBYTE *ExtData;
UBYTE *UserData; /* general-purpose pointer to User data extension */
};
!NewScreen
/include/intuition/intuition.h
struct NewScreen
{
SHORT LeftEdge, TopEdge, Width, Height, Depth; /* screen dimensions */
UBYTE DetailPen, BlockPen; /* for bar/border/gadget rendering */
USHORT ViewModes; /* the Modes for the ViewPort (and View) */
USHORT Type; /* the Screen type (see defines below) */
struct TextAttr *Font; /* this Screen's default text attributes */
UBYTE *DefaultTitle; /* the default title for this Screen */
struct Gadget *Gadgets; /* your own Gadgets for this Screen */
/* if you are opening a CUSTOMSCREEN and already have a BitMap
* that you want used for your Screen, you set the flags CUSTOMBITMAP in
* the Types variable and you set this variable to point to your BitMap
* structure. The structure will be copied into your Screen structure,
* after which you may discard your own BitMap if you want
*/
struct BitMap *CustomBitMap;
};
!Preferences
/include/intuition/intuition.h
struct Preferences
{
/* the default font height */
BYTE FontHeight; /* height for system default font */
/* constant describing what's hooked up to the port */
UBYTE PrinterPort; /* printer port connection */
/* the baud rate of the port */
USHORT BaudRate; /* baud rate for the serial port */
/* various timing rates */
struct timeval KeyRptSpeed; /* repeat speed for keyboard */
struct timeval KeyRptDelay; /* Delay before keys repeat */
struct timeval DoubleClick; /* Interval allowed between clicks */
/* Intuition Pointer data */
USHORT PointerMatrix[POINTERSIZE]; /* Definition of pointer sprite */
BYTE XOffset; /* X-Offset for active 'bit' */
BYTE YOffset; /* Y-Offset for active 'bit' */
USHORT color17; /***********************************/
USHORT color18; /* Colours for sprite pointer */
USHORT color19; /***********************************/
USHORT PointerTicks; /* Sensitivity of the pointer */
/* Workbench Screen colors */
USHORT color0; /***********************************/
USHORT color1; /* Standard default colours */
USHORT color2; /* Used in the Workbench */
USHORT color3; /***********************************/
/* positioning data for the Intuition View */
BYTE ViewXOffset; /* Offset for top lefthand corner */
BYTE ViewYOffset; /* X and Y dimensions */
WORD ViewInitX, ViewInitY; /* View initial offset values */
BOOL EnableCLI; /* CLI availability switch */
/* printer configurations */
USHORT PrinterType; /* printer type */
UBYTE PrinterFilename[FILENAME_SIZE];/* file for printer */
/* print format and quality configurations */
USHORT PrintPitch; /* print pitch */
USHORT PrintQuality; /* print quality */
USHORT PrintSpacing; /* number of lines per inch */
UWORD PrintLeftMargin; /* left margin in characters */
UWORD PrintRightMargin; /* right margin in characters */
USHORT PrintImage; /* positive or negative */
USHORT PrintAspect; /* horizontal or vertical */
USHORT PrintShade; /* b&w, half-tone, or color */
WORD PrintThreshold; /* darkness ctrl for b/w dumps */
/* print paper descriptors */
USHORT PaperSize; /* paper size */
UWORD PaperLength; /* paper length in number of lines */
USHORT PaperType; /* continuous or single sheet */
BYTE padding[50]; /* For further system expansion */
};
!Remember
/include/intuition/intuition.h
struct Remember
{
struct Remember *NextRemember;
ULONG RememberSize;
UBYTE *Memory;
};
!IntuitionBase
/include/intuition/intuitionbase.h
struct IntuitionBase
{
struct Library LibNode;
};
!MiscResource
/include/resources/misc.h
struct MiscResource {
struct Library mr_Library;
ULONG mr_AllocArray[NUMMRTYPES];
};
!DiscResourceUnit
/include/resources/disk.h
struct DiscResourceUnit {
struct Message dru_Message;
struct Interrupt dru_DiscBlock;
struct Interrupt dru_DiscSync;
struct Interrupt dru_Index;
};
!DiscResource
/include/resources/disk.h
struct DiscResource {
struct Library dr_Library;
struct DiscResourceUnit *dr_Current;
UBYTE dr_Flags;
UBYTE dr_pad;
struct Library *dr_SysLib;
struct Library *dr_CiaResource;
ULONG dr_UnitID[4];
struct List dr_Waiting;
struct Interrupt dr_DiscBlock;
struct Interrupt dr_DiscSync;
struct Interrupt dr_Index;
};
!iobuf
/include/lattice/stdio.h
struct _iobuf
{
unsigned char *_ptr; /* current buffer pointer */
int _rcnt; /* current byte count for reading */
int _wcnt; /* current byte count for writing */
unsigned char *_base; /* base address of I/O buffer */
char _flag; /* control flags */
char _file; /* file number */
int _size; /* size of buffer */
unsigned char _cbuff; /* single char buffer */
char _pad; /* (pad to even number of bytes) */
};
!FCB
/include/lattice/dos.h
struct FCB
{
char fcbdrv; /* drive code */
char fcbnam[8]; /* file name */
char fcbext[3]; /* file name extension */
char fcbexn; /* extent number */
char fcbs1; /* reserved */
char fcbs2; /* reserved */
char fcbrc; /* record count */
char fcbsys[16]; /* reserved */
char fcbcr; /* current record number */
short fcbrec; /* random record number */
char fcbovf; /* random record overflow */
};
!MELT
/include/lattice/dos.h
struct MELT
{
struct MELT *fwd; /* points to next free block */
#if SPTR
unsigned size; /* number of MELTs in this block */
#else
long size; /* number of MELTs in this block */
#endif
};
!exception
/include/lattice/math.h
struct exception
{
int type; /* error type */
char *name; /* math function name */
double arg1, arg2; /* function arguments */
double retval; /* proposed return value */
};
!UFB
/include/lattice/ios1.h
struct UFB
{
char ufbflg; /* flags */
char ufbtyp;
int ufbfh; /* file handle */
};
!Custom
/include/hardware/custom.h
struct Custom {
UWORD bltddat;
UWORD dmaconr;
UWORD vposr;
UWORD vhposr;
UWORD dskdatr;
UWORD joy0dat;
UWORD joy1dat;
UWORD clxdat;
UWORD adkconr;
UWORD pot0dat;
UWORD pot1dat;
UWORD potinp;
UWORD serdatr;
UWORD dskbytr;
UWORD intenar;
UWORD intreqr;
APTR dskpt;
UWORD dsklen;
UWORD dskdat;
UWORD refptr;
UWORD vposw;
UWORD vhposw;
UWORD copcon;
UWORD serdat;
UWORD serper;
UWORD potgo;
UWORD joytest;
UWORD strequ;
UWORD strvbl;
UWORD strhor;
UWORD strlong;
UWORD bltcon0;
UWORD bltcon1;
UWORD bltafwm;
UWORD bltalwm;
APTR bltcpt;
APTR bltbpt;
APTR bltapt;
APTR bltdpt;
UWORD bltsize;
UWORD pad2d[3];
UWORD bltcmod;
UWORD bltbmod;
UWORD bltamod;
UWORD bltdmod;
UWORD pad34[4];
UWORD bltcdat;
UWORD bltbdat;
UWORD bltadat;
UWORD pad3b[4];
UWORD dsksync;
ULONG cop1lc;
ULONG cop2lc;
UWORD copjmp1;
UWORD copjmp2;
UWORD copins;
UWORD diwstrt;
UWORD diwstop;
UWORD ddfstrt;
UWORD ddfstop;
UWORD dmacon;
UWORD clxcon;
UWORD intena;
UWORD intreq;
UWORD adkcon;
struct AudChannel {
UWORD *ac_ptr; /* ptr to start of waveform data */
UWORD ac_len; /* length of waveform in words */
UWORD ac_per; /* sample period */
UWORD ac_vol; /* volume */
UWORD ac_dat; /* sample pair */
UWORD ac_pad[2]; /* unused */
} aud[4];
APTR bplpt[6];
UWORD pad7c[4];
UWORD bplcon0;
UWORD bplcon1;
UWORD bplcon2;
UWORD pad83;
UWORD bpl1mod;
UWORD bpl2mod;
UWORD pad86[2];
UWORD bpldat[6];
UWORD pad8e[2];
APTR sprpt[8];
struct SpriteDef {
UWORD pos;
UWORD ctl;
UWORD dataa;
UWORD datab;
} spr[8];
UWORD color[32];
};
!CIA
/include/hardware/cia.h
struct CIA {
UBYTE ciapra;
UBYTE pad0[0xff];
UBYTE ciaprb;
UBYTE pad1[0xff];
UBYTE ciaddra;
UBYTE pad2[0xff];
UBYTE ciaddrb;
UBYTE pad3[0xff];
UBYTE ciatalo;
UBYTE pad4[0xff];
UBYTE ciatahi;
UBYTE pad5[0xff];
UBYTE ciatblo;
UBYTE pad6[0xff];
UBYTE ciatbhi;
UBYTE pad7[0xff];
UBYTE ciatodlow;
UBYTE pad8[0xff];
UBYTE ciatodmid;
UBYTE pad9[0xff];
UBYTE ciatodhi;
UBYTE pad10[0xff];
UBYTE unusedreg;
UBYTE pad11[0xff];
UBYTE ciasdr;
UBYTE pad12[0xff];
UBYTE ciaicr;
UBYTE pad13[0xff];
UBYTE ciacra;
UBYTE pad14[0xff];
UBYTE ciacrb;
};
!bltnode
/include/hardware/blit.h
struct bltnode
{
struct bltnode *n;
int (*function)();
char stat;
short blitsize;
short beamsync;
int (*cleanup)();
};
!narrator
/include/devices/narrator.h
struct narrator_rb {
struct IOStdReq message; /* Standard IORB */
UWORD rate; /* Speaking rate (words/minute) */
UWORD pitch; /* Baseline pitch in Hertz */
UWORD mode; /* Pitch mode */
UWORD sex; /* Sex of voice */
UBYTE *ch_masks; /* Pointer to audio alloc maps */
UWORD nm_masks; /* Number of audio alloc maps */
UWORD volume; /* Volume. 0 (off) thru 64 */
UWORD sampfreq; /* Audio sampling freq */
UBYTE mouths; /* If non-zero, generate mouths */
UBYTE chanmask; /* Which ch mask used (internal)*/
UBYTE numchan; /* Num ch masks used (internal) */
UBYTE pad; /* For alignment */
};
!mouth
/include/devices/narrator.h
struct mouth_rb {
struct narrator_rb voice; /* Speech IORB */
UBYTE width; /* Width (returned value) */
UBYTE height; /* Height (returned value) */
UBYTE shape; /* Internal use, do not modify */
UBYTE pad; /* For alignment */
};
!KeyMap
/include/devices/keymap.h
struct KeyMap {
APTR km_LoKeyMapTypes;
APTR km_LoKeyMap;
APTR km_LoCapsable;
APTR km_LoRepeatable;
APTR km_HiKeyMapTypes;
APTR km_HiKeyMap;
APTR km_HiCapsable;
APTR km_HiRepeatable;
};
!timeval
/include/devices/timer.h
struct timeval {
ULONG tv_secs;
ULONG tv_micro;
};
!timerequest
/include/devices/timer.h
struct timerequest {
struct IORequest tr_node;
struct timeval tr_time;
};
!IOPrtCmdReq
/include/devices/printer.h
struct IOPrtCmdReq {
struct Message io_Message;
struct Device *io_Device; /* device node pointer */
struct Unit *io_Unit; /* unit (driver private)*/
UWORD io_Command; /* device command */
UBYTE io_Flags;
BYTE io_Error; /* error or warning num */
UWORD io_PrtCommand; /* printer command */
UBYTE io_Parm0; /* first command parameter */
UBYTE io_Parm1; /* second command parameter */
UBYTE io_Parm2; /* third command parameter */
UBYTE io_Parm3; /* fourth command parameter */
};
!IODRPReq
/include/devices/printer.h
struct IODRPReq {
struct Message io_Message;
struct Device *io_Device; /* device node pointer */
struct Unit *io_Unit; /* unit (driver private)*/
UWORD io_Command; /* device command */
UBYTE io_Flags;
BYTE io_Error; /* error or warning num */
struct RastPort *io_RastPort; /* raster port */
struct ColorMap *io_ColorMap; /* color map */
ULONG io_Modes; /* graphics viewport modes */
UWORD io_SrcX; /* source x origin */
UWORD io_SrcY; /* source y origin */
UWORD io_SrcWidth; /* source x width */
UWORD io_SrcHeight; /* source x height */
LONG io_DestCols; /* destination x width */
LONG io_DestRows; /* destination y height */
UWORD io_Special; /* option flags */
};
!IOTArray
/include/devices/serial.h
struct IOTArray {
ULONG TermArray0;
ULONG TermArray1;
};
!IOExtSer
/include/devices/serial.h
struct IOExtSer {
struct IOStdReq IOSer;
/* STRUCT MsgNode
* 0 APTR Succ
* 4 APTR Pred
* 8 UBYTE Type
* 9 UBYTE Pri
* A APTR Name
* E APTR ReplyPort
* 12 UWORD MNLength
* STRUCT IOExt
* 14 APTR io_Device
* 18 APTR io_Unit
* 1C UWORD io_Command
* 1E UBYTE io_Flags
* 1F UBYTE io_Error
* STRUCT IOStdExt
* 20 ULONG io_Actual
* 24 ULONG io_Length
* 28 APTR io_Data
* 2C ULONG io_Offset
*
* IMPORTANT !! DON'T CHANGE the long-word alignment of ANY of these fields !!
* You can add to the end if you must do something.
* 30 */
ULONG io_CtlChar; /* control char's (order = xON,xOFF,INQ,ACK) */
ULONG io_RBufLen; /* length in bytes of serial port's read buffer */
ULONG io_WBufLen; /* length in bytes of serial port's write buffer */
ULONG io_Baud; /* baud rate requested (true baud) */
ULONG io_BrkTime; /* duration of break signal in MICROseconds */
struct IOTArray io_TermArray; /* termination character array */
UBYTE io_ReadLen; /* bits per read character (bit count) */
UBYTE io_WriteLen; /* bits per write character (bit count) */
UBYTE io_StopBits; /* stopbits for read (count) */
UBYTE io_SerFlags; /* see SERFLAGS bit definitions above */
UWORD io_Status;
};
!GamePortTrigger
/include/devices/gameport.h
struct GamePortTrigger {
UWORD gpt_Keys; /* key transition triggers */
UWORD gpt_Timeout; /* time trigger (vertical blank units) */
UWORD gpt_XDelta; /* X distance trigger */
UWORD gpt_YDelta; /* Y distance trigger */
};
!IOAudio
/include/devices/audio.h
struct IOAudio {
struct IORequest ioa_Request;
WORD ioa_AllocKey;
UBYTE *ioa_Data;
ULONG ioa_Length;
UWORD ioa_Period;
UWORD ioa_Volume;
UWORD ioa_Cycles;
struct Message ioa_WriteMsg;
};
!ClipboardUnitPartial
/include/devices/clipboard.h
struct ClipboardUnitPartial {
struct Node cu_Node; /* list of units */
ULONG cu_UnitNum; /* unit number for this unit */
/* the remaining unit data is private to the device */
};
!IOClipReq
/include/devices/clipboard.h
struct IOClipReq {
struct Message io_Message;
struct Device *io_Device; /* device node pointer */
struct Unit *io_Unit; /* unit (driver private)*/
UWORD io_Command; /* device command */
UBYTE io_Flags; /* including QUICK and SATISFY */
BYTE io_Error; /* error or warning num */
ULONG io_Actual; /* number of bytes transferred */
ULONG io_Length; /* number of bytes requested */
STRPTR io_Data; /* either clip stream or post port */
ULONG io_Offset; /* offset in clip stream */
LONG io_ClipID; /* ordinal clip identifier */
};
!SatisfyMsg
/include/devices/clipboard.h
struct SatisfyMsg {
struct Message sm_Msg; /* the length will be 6 */
UWORD sm_Unit; /* which clip unit this is */
LONG sm_ClipID; /* the clip identifier of the post */
};
!ClipStream
/include/devices/clipboard.h
struct ClipStream {
ULONG cs_Length; /* total length of the clip stream */
UWORD cs_Unit; /* clip unit (set by read) */
/* struct ClipItem data immediately follows */
};
!ClipItem
/include/devices/clipboard.h
struct ClipItem {
ULONG ci_Length; /* total length of the clip item */
UWORD ci_NameLength; /* clip name length, including null */
/* the null terminated name immediately follows */
/* the specific type struct immediately follows */
};
!ClipANSI
/include/devices/clipboard.h
struct ClipANSI {
ULONG ca_Length; /* number of ANSI bytes */
/* this consists of a byte stream of ANSI 3.64 bytes whose length is
/* ca_Length. Private escape sequences are as for the console and
/* printer devices, with the following addition to select fonts:
/* <DCS> x<font-name><ST>
/* where <DCS> is the byte $90 or the string <ESC>P,
/* " x" are the two characters space and lower case x,
/* <font-name> is the name of the amiga font in lower case sans the
/* ".font" suffix, and
/* <ST> is the byte $9C or the string <ESC>|
/*
/**/
};
!ClipBitMap
/include/devices/clipboard.h
struct ClipBitMap {
WORD cbm_Modes; /* graphics viewport modes */
UWORD cbm_XSize; /* width in pixels */
UWORD cbm_Rows; /* height */
UBYTE cbm_Depth; /* depth */
UBYTE cbm_CMapWords; /* number of elements in color map */
UWORD cbm_XOffset; /* Offset of the */
UWORD cbm_YOffset; /* clip in the */
UBYTE cbm_ZOffset; /* original source, */
UBYTE cbm_CMapOffset; /* including the color map offset */
ULONG cbm_BitDataLength; /* # of bitmap bytes after color map */
/* the color map words follow */ /* color map */
/* there are cbm_CMapSize words of color map */
/* the bit data bytes follow */ /* bit plane data */
/* bit data encoding */
/*
/* to interpret the byte data, read it as a byte stream with header
/* bytes of two types, depending on bit 7 of the byte.
/* +-7+6-5-4-3-2-1-0+
/* | 0| <count> | literal stream: take the next count bytes as literal
/* +--+-------------+ bytes to represent the bit plane values of the
/* clip. Each row starts with the MSB of a new
/* byte (no shift is implied by the Offset fields). The next row is
/* implicit when enough data has been provided to fill a row, the next
/* plane is implicit when enougn data has been provided to fill a plane.
/* The <count> can cause the stream to wrap both rows and planes.
/* A <count> of zero is special and causes the remaining stream (enough
/* to describe the clip) to be interpreted entirely as literal bytes.
/*
/* or
/* +-7+6-5-4-3-2-1-0+
/* | 1| <repeat> | repeat stream: take the next byte and repeat it
/* +--+-------------+ <repeat> times, where zero indicates only one
/* occurance of the byte. The repeated bytes are
/* otherwise identical to a literal stream consisting of <repeat>+1 of the
/* bytes.
/*
/**/
};
!IOPArray
/include/devices/parallel.h
struct IOPArray {
ULONG PTermArray0;
ULONG PTermArray1;
};
!IOExtPar
/include/devices/parallel.h
struct IOExtPar {
struct IOStdReq IOPar;
/* STRUCT MsgNode
* 0 APTR Succ
* 4 APTR Pred
* 8 UBYTE Type
* 9 UBYTE Pri
* A APTR Name
* E APTR ReplyPort
* 12 UWORD MNLength
* STRUCT IOExt
* 14 APTR io_Device
* 18 APTR io_Unit
* 1C UWORD io_Command
* 1E UBYTE io_Flags
* 1F UBYTE io_Error
* STRUCT IOStdExt
* 20 ULONG io_Actual
* 24 ULONG io_Length
* 28 APTR io_Data
* 2C ULONG io_Offset
* 30 */
ULONG io_PWBufLen; /* length of parallel port's write buffer */
UBYTE io_Status; /* status of parallel port and registers */
UBYTE io_ParFlags; /* see PARFLAGS bit definitions above */
struct IOPArray io_PTermArray; /* termination character array */
};
!IOExtTD
/include/devices/trackdisk.h
struct IOExtTD {
struct IOStdReq iotd_Req;
ULONG iotd_Count;
ULONG iotd_SecLabel;
};
!BootBlock
/include/devices/bootblock.h
struct BootBlock {
UBYTE bb_id[4]; /* 4 character identifier */
LONG bb_chksum; /* boot block checksum (balance) */
LONG bb_dosblock; /* reserved for DOS patch */
};
!InputEvent
/include/devices/inputevent.h
struct InputEvent {
struct InputEvent *ie_NextEvent; /* the chronologically next event */
UBYTE ie_Class; /* the input event class */
UBYTE ie_SubClass; /* optional subclass of the class */
UWORD ie_Code; /* the input event code */
UWORD ie_Qualifier; /* qualifiers in effect for the event */
union {
struct {
WORD ie_x; /* the pointer position for the event */
WORD ie_y;
} ie_xy;
APTR ie_addr;
} ie_position;
struct timeval ie_TimeStamp; /* the system tick at the event */
};